//#include <iostream>
//using namespace std;
//class Calculator
//{
//public:
//    int GetResult(string opr)
//    {
//        if (opr == "+")
//        {
//            return m_A + m_B;
//        }
//        else if (opr == "*")
//        {
//            return m_A * m_B;
//        }
//    }
//public:
//    int m_A;
//    int m_B;
//};
//void test01()
//{
//    Calculator p;
//    p.m_A = 10;
//    p.m_B = 10;
//    cout << "A + B = " << p.GetResult("+") << endl;
//    cout << "A * B = " << p.GetResult("*") << endl;
//}
////缺点：增加功能，修改bug不方便，代码可读性不高
//
//
////利用多态来实现
//class AbstractCalculator
//{
//public:
//    virtual int GetNum()
//    {
//        return 0;
//    }
//public:
//    int m_A;
//    int m_B;
//};
//class AbstractCalculatorAdd : public AbstractCalculator
//{
//    int GetNum()
//    {
//        return m_A + m_B;
//    }
//};
//class AbstractCalculatorMul : public AbstractCalculator
//{
//    int GetNum()
//    {
//        return m_A * m_B;
//    }
//};
//class AbstractCalculatorSub : public AbstractCalculator
//{
//    int GetNum()
//    {
//        return m_A - m_B;
//    }
//};
//void test02()
//{
//    AbstractCalculator * abc = new AbstractCalculatorAdd;
//    abc->m_A = 20;
//    abc->m_B = 30;
//    abc = new AbstractCalculatorSub;
//    abc->m_A = 20;
//    abc->m_B = 30;
//    cout << abc->m_A << " + " << abc->m_B << " = "  << abc->GetNum() << endl;
//    cout << abc->m_A << " - " << abc->m_B << " = "  << abc->GetNum() << endl;
//
//}
//int main()
//{
////    test01();
//    test02();
//    return 0;
//}

